package com.loeng.module.system.service.permission;

import java.util.Set;

/**
 * 权限 Service 实现类
 *
 * @author loeng zhuo
 */
public interface PermissionService {

    /**
     * 根据用户ID，查询角色ID集合
     *
     * @param loginUserId 用户ID
     * @return 角色ID集合
     */
    Set<Long> getUserRoleIdListByUserId(Long loginUserId);

    /**
     * 根据角色ID集合，查询菜单ID集合
     *
     * @param roleIds 角色ID集合
     * @return 菜单ID集合
     */
    Set<Long> getRoleMenuListByRoleId(Set<Long> roleIds);

    /**
     * 判断是否有权限，任一一个即可
     *
     * @param userId      用户编号
     * @param permissions 权限
     * @return 是否
     */
    boolean hasAnyPermissions(Long userId, String...  permissions);

    /**
     * 获得用户拥有的角色编号集合，从缓存中获取
     *
     * @param userId 用户编号
     * @return 角色编号集合
     */
    Set<Long> getUserRoleIdListByUserIdFromCache(Long userId);

    /**
     * 获得菜单拥有的角色编号集合，从缓存中获取
     *
     * @param menuId 菜单编号
     * @return 角色编号集合
     */
    Set<Long> getMenuRoleIdListByMenuIdFromCache(Long menuId);

}
